#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
 
int main()
{
	// 记录错误出现的次数
	unordered_map<string, int> mp;
	// 按顺序保存出现的错误
	vector<string> vec;
	// 文件
	string curStr;
	// 行号
	string num;
	size_t position;
	while (cin >> curStr >> num)
	{
		// 文件名预处理，查看是否有\
		// rfind: 找到\, 返回非npos
		position = curStr.rfind('\\');
		if (position != string::npos)
		{
			// 反斜杠存在，文件名为最后一个反斜杠之后的字符串
			curStr = curStr.substr(position + 1);
		}
		// 查看文件长度是否大于16
		if (curStr.size() > 16)
		{
			curStr = curStr.substr(curStr.size() - 16);
		}
		// 加上行号,用空格隔开
		curStr += " " + num;
		// 判断记录是否为第一次出现
		if (mp.count(curStr) == 0)
		{
			vec.push_back(curStr);
		}
		// 记录次数的累加
		mp[curStr]++;
	}
	// 打印记录
	int start = 0;
	// 需要打印最后8条记录
	if (vec.size() > 8)
	{
		start = vec.size() - 8;
	}
	for (; start < vec.size(); ++start)
	{
		cout << vec[start] << " " << mp[vec[start]] << endl;
	}
	return 0;
}